#include <iostream>
#include "class/Student.h"
#include "class/Instance.h"

using namespace std;

// 友元函数
void testModifyScore(Student *stu, float _score) {
    stu->score = _score;
}

// C++允许函数重载，C不允许函数重载
void test(int a) {}

void test(float a) {}

// 面向对象
int main23() {
    // 构造Student
    // Student student(1, 2);

    // 使用new的方式构造：在堆中申请内存并进行内存定义
    Student *student = new Student(1, 2);
    testModifyScore(student, 111);
    cout << student->getScore() << endl;
    delete student;

    // 使用单例
    Instance *instance = Instance::getInstance();

    // 使用运算符重载
    // Student temp;内存位于栈中,运算符重载方法运行结束，按理说temp会被回收，但是此时还能获取该对象，是因为进行了内存拷贝
    // 拷贝temp对象给一个临时对象
    // 临时对象拷贝给s3，然后temp被回收
    Student s1;
    s1.temp = 1;
    Student s2;
    s2.temp = 2;
    Student s3 = s1 + s2;
    cout << "s3 temp=" << s3.temp << endl;


    return 0;
}